
#include "case.h"

Case * creerCase(const int nbJ)
{
    Case * C = (Case*)malloc(sizeof(Case));
    initCase(C,nbJ);
    return C;
}

void initCase (Case * uneCase, const int nbJoueur)
{
    int i;
    uneCase->genreCase = 0;
    uneCase->positionCase = 0;
    uneCase->actionCase = NULL;
    uneCase->valideCase = (bool*)malloc(nbJoueur*sizeof(bool));

    for(i=0;i<nbJoueur;i++)
        uneCase->valideCase[i]=false;
}

void libereCase(Case * uneCase)
{
    if(uneCase->genreCase == exam && uneCase->actionCase != NULL)
        detruitQuestion(&uneCase->actionCase);

    uneCase->genreCase = 0;
    uneCase->positionCase = 0;
    uneCase->actionCase = NULL;
    free(uneCase->valideCase);
}

void detruitCase(Case ** C)
{
    libereCase(*C);
    free(*C);
    *C = NULL;
}


void setGenreCase (Case * uneCase, const GenreCase type)
{
    uneCase->genreCase = type;
}
void setPositionCase (Case * uneCase, const int positionCase)
{
    uneCase->positionCase = positionCase;
}
void setActionCase(Case * uneCase, Question * quest)
{
    assert(uneCase->genreCase == exam);
    uneCase->actionCase = quest;
}

void setValideCase(Case * uneCase, const int joueur, const bool res)
{
    uneCase->valideCase[joueur] = res;
}


GenreCase getGenreCase (const Case * uneCase)
{
    return uneCase->genreCase;
}
int getPositionCase (const Case * uneCase)
{
    return uneCase->positionCase;
}
Question * getActionCase(const Case * uneCase)
{
    return uneCase->actionCase;
}
bool getValideCase (const Case * uneCase, const int joueur)
{
    return uneCase->valideCase[joueur];
}
